Copyright: Copyright ©


Contents

Overview:

What is DLLCheck’s purpose in life?

How do you use DLLCheck?

Menu Options:

Preferences

Clear

Include

Display

Glossary

Copyrights and Credits


What is DLLCheck's purpose in life?

DLLCheck allows you to track the DLLs - dynamic-link libraries - your system is using or that a program causes to be loaded into your system.  It reports where the DLL was found and, in the case where multiple copies of the DLL were found, the order Windows used to arbitrate the load of the DLL.  It provides the size and date/time stamp of each DLL and the directory where the DLL is located.  Version information, that can be embedded in the DLL execution code, is available with a click of a button.  And you can search for a DLL across multiple drives outside the search path Windows normally uses.  In short, DLLCheck provides you a tool to help identify the DLLs your Windows system and programs use and, potentially, to identify any conflicts arising because of multiple versions of these DLLs.

DLLCheck does not provide for dynamic loading or unloading of DLLs.  Nor does DLLCheck provide a convenient method to remove offending duplicates where these are causing troubles.  Nor will DLLCheck automatically identify incorrect versions of DLLs for you.  You must use other tools, e.g., FileManager, to delete out-of-date DLLs and then reload your application to see if this fixes the problem.  Finally, DLLCheck does not reliably report DLLs that are dynamically loaded and subsequently freed by means of Windows API LoadLibrary and FreeLibrary calls.


How do you use DLLCheck?

There are three options located under the Analyze menu item - Clear, Include, and Display.  Their order suggests how you enlist DLLCheck’s aid in identifying DLLs loaded in your system.

Other methods are available, depending upon your task and what you need to analyze.


Clear

Select this option to refresh DLLCheck’s internal list of already-loaded DLLs.  DLLCheck compares this list against one created after a new program has been Included and Displayed to produce the list of DLLs loaded by the new program.

Tip - To obtain a list of DLLs currently loaded in your system when DLLCheck first begins, select Display immediately but do not select this option.

Preferences


Include

Select this option to add programs to the list that DLLCheck will report on.  In order to produce a report on DLLs that a program updates the usage counter on or causes to be newly loaded, perform the following:

1) Clear DLLCheck’s internal list;

2) Include the program;and

3) Display the results.

Including multiple programs will create a composite report when the Display option is selected.  Note that this option actually starts the selected program; you may need to close it down later outside of DLLCheck’s operation.

Tip - Check the Run Minimized option to start the program in the background.  Not all programs will permit this, however.

Search (Include)


Search (Include)

Pressing the Search button in the Include option will cause a dialog box to popup which allows you to search for a program to include.  Selecting Cancel will abort the Include option.


Display

Select this option to display a report of DLLs that DLLCheck has found loaded into your system.  This report contains the DLL’s name, usage count (in parentheses), size, date and time stamp, and the path where the DLL was found.  A clicking noise may have been generated or a message box may have appeared while this report was being assembled.  Each instance of the sound/message box signals a duplicate that DLLCheck has found in following Windows dynamic-link library load strategy.  Duplicates are listed in order, according to this strategy.

Tip - Set the double-click option to either VersionInfo or Search (Display) in order to quickly access these options for a highlighted DLL.

Done

VersionInfo

Search (Display)

Print


Done

Press this button when you are finished with viewing the results of DLLCheck’s display.  You will also clear DLLCheck’s internal list if you have selected this option in the DLLCheck Preferences dialog box.


VersionInfo

Press this button to display version information contained in the highlighted DLL.  If no information is available, the window title No Version Information for xxx will be displayed.  Double-clicking will activate this option if you have selected it in the DLLCheck Preferences dialog box.


Search (Display)

Press this button to activate a more comprehensive search of the highlighted DLL module, i.e. a search outside of Windows DLL load strategy.  This search will scan all directories in all the drives you select for the highlighted DLL module.  Double-clicking will activate this option if you have selected it in the DLLCheck Preferences dialog box.


Print

Press this button to bring up a dialog box to control the print request.  The contents of the Display listbox will be printed.  The Selection and Pages options are unavailable and, hence, grayed in the Print dialog box.


Preferences

You can control DLLCheck’s behavior to some extent by setting up preferences that alert you when duplicate DLLs are found or that trigger an action when you double-click in the Display listbox.  The Save on Ok option will create a file named DLLCHECK.INI in your Windows directory.


Glossary

duplicate DLL

More than one file matching the DLL’s name found via the Windows dynamic-link library load strategy.

dynamic-link library

A .DLL file that contains one or more functions compiled, linked, and stored separately from the processes that use them. The operating system maps the DLLs into the process's address space when the process is starting up or while it is running. The process then executes functions in the DLL.

DLLCHECK.INI

A file containing DLLCheck preferences selected by the user and found in the Windows directory.

module usage count

Windows increments (increases by one) a module's reference count each time an application calls the LoadModule function. The count is decremented (decreased by one) when an application calls the FreeModule function.

Windows dynamic-link library load strategy

The system searches for the DLLs by using the following search path:

1)	The directory where the executable module for the current process is located.

2)	The current directory.

3)	The windows system directory

4)	The windows directory

5)	The directories listed in the PATH environment variable.


Copyrights and Credits

DLLCheck was developed with Borland C++ 4.02.

DLLCheck's help was developed with ForeHelp 1.0.

The code for the About Box DLL was first published by Ron Burk.

The Microsoft Developer Network provided many clues, answers, and samples.

Matt Pietrek provided inspiration with his NUKEDLL program.

Comments? Criticisms? Bug-reports?  I can be reached via CompuServe: 74223,1437.


duplicate DLL
More than one file matching the DLL’s name found in the Windows dynamic-link library load strategy.


dynamic-link library
A .DLL file that contains one or more functions compiled, linked, and stored separately from the processes that use them. The operating system maps the DLLs into the process's address space when the process is starting up or while it is running. The process then executes functions in the DLL.


dllcheck.ini
A file containing DLLCheck preferences selected by the user and stored in the Windows directory.


module usage count
Windows increments (increases by one) a module's reference count each time an application calls the LoadModule function. The count is decremented (decreased by one) when an application calls the FreeModule function.


Windows dynamic-link library search strategy
The system searches for the DLLs by using the following search path:

1)	The directory where the executable module for the current process is located.

2)	The current directory.

3)	The windows system directory

4)	The windows directory

5)	The directories listed in the PATH environment variable.


internal list
DLLCheck maintains an internal list of DLL's already loaded and uses this list to identify any updates or new additions.  This list is refreshed every time the Clear option is selected.